// 对axios进行封装
import axios from "axios"
// 由于前后端分离，后续接口都需要jwt令牌，因此需要在请求拦截器里携带jwt
// 请求拦截器（携带jwt）
axios.interceptors.request.use(cfg => {
  let jwt = sessionStorage.getItem("jwt")
  // 如果jwt存在，则在请求头携带
  if (jwt) {
    cfg.headers.Authorization = jwt
  }
  return cfg
})
// 响应拦截器 (sessionstorage中存储jwt)
axios.interceptors.response.use(res => {
  // 即如果请求成功，则请求回来的数据中有jwt，则将jwt存到sessionstorage中
  let jwt = res.data.context ? res.data.context.jwt : null
  if (jwt) {
    sessionStorage.setItem("jwt", jwt)
  }
  let acl = res.data.context ? res.data.context.acl : null
  if (acl) {
    sessionStorage.setItem("acl", JSON.stringify(acl))
    // 面包屑数据的预处理（将二维数组转为一维数组）
    let arr = []
    acl.forEach(el => {
      if(el.children.length > 0) {
        arr = [...arr,...el.children]
      }
    })
    sessionStorage.setItem("bread",JSON.stringify(arr))
  }
  return res
})
export default axios